/*
 * Copyright (c) 2006 Washington University in St. Louis.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * - Redistributions of source code must retain the above copyright
 *   notice, this list of conditions and the following disclaimer.
 * - Redistributions in binary form must reproduce the above copyright
 *   notice, this list of conditions and the following disclaimer in the
 *   documentation and/or other materials provided with the
 *   distribution.
 * - Neither the name of the copyright holders nor the names of
 *   its contributors may be used to endorse or promote products derived
 *   from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
 * THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
 * OF THE POSSIBILITY OF SUCH DAMAGE.
 */

/**
 * @author Kevin Klues (klueska@cs.wustl.edu)
 * @version $Revision: 1.3 $
 * @date $Date: 2010-06-29 22:07:42 $
 */

package net.tinyos.tools;

import java.sql.*;
import org.sqlite.JDBC;

import net.tinyos.message.*;
import net.tinyos.packet.*;
import net.tinyos.util.*;

public class PrintLuo implements MessageListener {

	private MoteIF moteIF;

	private int hum,tem,light; 
int usbnum[]={53,77,74,76,49,51,52,78,50,75,35,13,14,36,37,38,10,11,12,34,65,42,43,41,67,66,64,40,39,68,30,29,9,8,6,31,5,32,33,7,25,0,1,28,4,3,24,2,27,26,46,44,69,72,47,45,71,73,48,70,22,23,20,21,60,61,59,19,62,63,18,17,56,55,16,57,58,54}; 
	char[] strtemp = new char[30] ;//
	String str;//pay attention!!

	public PrintLuo(MoteIF moteIF) {
		this.moteIF = moteIF;
		this.moteIF.registerListener(new PrintfMsg(), this);
	}

	public  String char2String(char[] c){
		StringBuffer sb = new StringBuffer();
		for (int i = 0; i < c.length; i++) {
			sb = sb.append(c[i]);
		}
	//	System.out.println(sb);
		return sb.toString();
	}

	public static void insertDB(String hum,String tem,String light)
	  {
		Connection c = null;
		Statement stmt = null;
		try {
		  Class.forName("org.sqlite.JDBC");
		  c = DriverManager.getConnection("jdbc:sqlite:/home/wyg/lly/sqlite/sensor.db");
		 c.setAutoCommit(false);
		 System.out.println("Opened database successfully");

		 stmt = c.createStatement();
		 String sql = "INSERT INTO sensor (hum,tem,light,time) " +
		               "VALUES ( "+hum+", "+tem+", "+light+",  '2015-1-29');"; 
		 stmt.executeUpdate(sql);
		 stmt.close();
		  c.commit();
		  c.close();

	 } catch ( Exception e ) {
		  System.err.println( e.getClass().getName() + ":" + e.getMessage() );
		  System.exit(0);
		}
		System.out.println("Records created successfully");

	  }

	public void messageReceived(int to, Message message) {
		PrintfMsg msg = (PrintfMsg)message;
		for(int i=0; i<PrintfMsg.totalSize_buffer(); i++) {
			char nextChar = (char)(msg.getElement_buffer(i));
			if(nextChar != 0){
				//   System.out.print(nextChar);
				strtemp[i]=nextChar;
			}
		}
		// str=strtemp.toString();
		str = char2String(strtemp);
//		System.out.println(str+"!");
		//	System.out.print("\n");
		String str1[]= str.split("@");
	
		String a=str1[0];
	//	Float	hum1=Float.parseFloat(a)*0.0367f-2.0468f;
	//	if (hum1>100) hum1=100;		
		
	        String b=str1[1];
	  //      Float       tem1=Float.parseFloat(b)/10-400;
				

		String c=str1[2];
	    //    Float  light1=Float.parseFloat(c);
		insertDB(a,b,c);
//	  insertDB("12","34","56");
	//	System.out.println(a+" "+b+" "+c);   	
//		System.out.println(hum1+" "+tem1+ " "+light1+" ");

	}

	private static void usage() {
		System.err.println("usage: PrintfClient [-comm <source>]");
	}

	public static void main(String[] args) throws Exception {
		String source = null;
		if (args.length == 2) {
			if (!args[0].equals("-comm")) {
				usage();
				System.exit(1);
			}
			source = args[1];
		}

		PhoenixSource phoenix;
		if (source == null) {
			phoenix = BuildSource.makePhoenix(PrintStreamMessenger.err);
		}
		else {
			phoenix = BuildSource.makePhoenix(source, PrintStreamMessenger.err);
		}
		System.out.print(phoenix);
		MoteIF mif = new MoteIF(phoenix);
		PrintLuo client = new PrintLuo(mif);
	}
}
